# 装饰者模式
Java IO 体系设计中采用了设计模式中的装饰者模式,具有良好的拓展性
对应的设计(只以字节流为例,字符流类似)
- 抽象组件类:InputStream
- 抽象装饰器:FilterInputStream
- 具体组件(节点流):FileInputStream,ByteArrayInputStream,PipedInputStream
- 具体装饰器(处理流):BufferedInputStream,DataInputStream,PrintStream
为什么需要 FilterInputStream:大部分函数如 read() 在 InputStream 中已经实现,如果没有 FilterInputStream,那么在每一个具体装饰器的实现中,都需要重新实现一遍这些方法(简单包裹 InputStream 对象进行函数调用),而增加这么一个抽象装饰器后,只需要在 FilterInputStream 中重新实现一次即可,避免了大量重复代码
# 基本介绍
// 定义 since JDK 1.0
public class FilterInputStream
extends InputStream
public class BufferedInputStream
extends FilterInputStream
1
2
3
4
5
6
2
3
4
5
6
← 序列化 System 对 IO 的支持 →